<?php

class CargaMasivaController extends Controller
{
	public $layout='/layouts/column2';
	public $mainMenu='usuarios_grupos';

	public function filters()
	{
		return array(
				'accessControl',
		);
	}

	public function accessRules()
	{
		return array(
				array('allow',
						'actions'=>array('cargarhorarios','cargarasistentescatedra'),
						'roles'=>array('ADMINISTRADOR'),
				),
				array('deny',  // deny all users
						'users'=>array('*'),
				),
		);
	}

	

	// Uncomment the following methods and override them if needed
	/*
	public function filters()
	{
	// return the filter configuration for this controller, e.g.:
	return array(
			'inlineFilterName',
			array(
					'class'=>'path.to.FilterClass',
					'propertyName'=>'propertyValue',
			),
	);
	}

	public function actions()
	{
	// return external action classes, e.g.:
	return array(
			'action1'=>'path.to.ActionClass',
			'action2'=>array(
					'class'=>'path.to.AnotherActionClass',
					'propertyName'=>'propertyValue',
			),
	);
	}
	*/

	public function actionCargarHorarios(){
		if(Yii::app()->request->isPostRequest){
			$respuesta=array('error'=>false);
			$transaction=Yii::app()->db->beginTransaction();
			$path_archivo=$_FILES['archivo']['tmp_name'];
			try{
				$ciclo=new Ciclo();
				$ciclo->attributes=$_POST;
				if($ciclo->save()){
					$parser=new CargaMasivaHorarioCatedraticoParser($path_archivo, $ciclo->id);
					$parser->validarArchivo();
					$parser->parse();
					$transaction->commit();
				}
				else {
					throw  new Exception('El ciclo no ha sido almacenado no se procedera con la carga');
				}

			}catch (Exception $e){
				$transaction->rollback();
				$respuesta['error']=true;
				$respuesta['mensaje']=htmlspecialchars($e->getMessage());
			}
			echo json_encode($respuesta);
			Yii::app()->end();
		}
		else{
			$periodos=Periodo::model()->findAll();
			$this->render('horarios_catedraticos',array('periodos'=>$periodos));
		}
	}

	public function actionCargarAsistentesCatedra(){
		if(Yii::app()->request->isPostRequest){
			$respuesta=array('error'=>false);
			$transaction=Yii::app()->db->beginTransaction();
			$path_archivo=$_FILES['archivo']['tmp_name'];
			try{
				$ciclo=Ciclo::model()->obtenerUltimoCiclo();
				$parser=new CargaMasivaAsistentesCatedraParser($path_archivo, $ciclo->id);
				$parser->validarArchivo();
				$parser->parse();
				$transaction->commit();
			}catch (Exception $e){
				$transaction->rollback();
				$respuesta['error']=true;
				$respuesta['mensaje']=htmlspecialchars($e->getMessage());
			}
			echo json_encode($respuesta);
			Yii::app()->end();
		}
		else{
			$ultimoCiclo=Ciclo::model()->obtenerUltimoCiclo();
			$this->render('asistentes_catedra',array('ultimo_ciclo'=>$ultimoCiclo));
		}
	}


	public  function actionTest(){

		//INSERT INTO ciclo (id,anio,id_periodo,fecha_inicio,fecha_fin,usuario_ing,creado)
		$transaction=Yii::app()->db->beginTransaction();
		$path_archivo='D:\Documentos\Proyecto escuela sistemas\carga_masiva\Horario2-2012-CCYSS(v2).xls';
		try{
			$ciclo=new Ciclo();
			$ciclo->anio=2012;
			$ciclo->id_periodo=2;
			$ciclo->fecha_inicio='2012-02-02';
			$ciclo->fecha_fin='2012-06-02';
			$ciclo->usuario_ing='admin';
			$ciclo->save();
			$parser=new CargaMasivaHorarioCatedraticoParser($path_archivo, $ciclo->id);
			$parser->validarArchivo();
			$parser->parse();
			//$transaction->commit();
		}catch (Exception $e){
			$transaction->rollback();
			throw new Exception($e);
		}
	}

	public function actionTestAsistentesCatedra(){
		//INSERT INTO ciclo (id,anio,id_periodo,fecha_inicio,fecha_fin,usuario_ing,creado)
		$transaction=Yii::app()->db->beginTransaction();
		$path_archivo='D:\Documentos\Proyecto escuela sistemas\carga_masiva\Listado_Asistentes de Catedra.xls';
		try{
			$ciclo=Ciclo::model()->obtenerUltimoCiclo();
			//			new Ciclo();
			// 			$ciclo->anio=2012;
			// 			$ciclo->id_periodo=2;
			// 			$ciclo->fecha_inicio='2012-02-02';
			// 			$ciclo->fecha_fin='2012-06-02';
			// 			$ciclo->usuario_ing='admin';
			// 			$ciclo->save();
			$parser=new CargaMasivaAsistentesCatedraParser($path_archivo, $ciclo->id);
			$parser->validarArchivo();
			$parser->parse();
			//$transaction->commit();
		}catch (Exception $e){
			$transaction->rollback();
			throw new Exception($e);
		}
	}

}